
from qturboframe.lib.report.log import logger
from qturboframe.public_ui.h_ui.select_tree import SelectTree as HuiSelectTree


class SelectTree(HuiSelectTree):
    '''
    操作员中心下拉树形框进行封装
    '''

    def is_default(self, value):
        """
        检查操作员中心下拉树形框默认值
        重写说明：操作员中心下拉树形框默认值有在h-selectTree-input弹框中的，需要兼容到

        :Args:
         - value: 待检查的选项值

        :Returns:
            匹配返回True，否则返回False

        :Example:
         - 例1: select_tree.is_default('节点1,节点2')
         - 例2: select_tree.is_default('节点1')
        """
        select_div = self._element.find_element_by_attribute(
            'css selector', 'div.h-selectTree-selection', timeout=self.timeout)
        title = select_div.get_attribute('title')
        if title:
            if value == title:
                return True
            else:
                logger.error('默认值不匹配！')
                return False
        span_default = select_div.exist(
            'css selector', 'span.h-selectTree-placeholder', timeout=self.timeout)
        if span_default and span_default.is_displayed():
            text = span_default.text
            if value == text:
                return True
            else:
                logger.error('默认值不匹配！')
                return False
        input_default = select_div.exist('css selector', 'input.h-selectTree-input', timeout=self.timeout)
        if input_default:
            if input_default.text:
                text = input_default.text
            elif input_default.get_attribute('value'):
                text = input_default.get_attribute('value')
            elif input_default.get_attribute('placeholder'):
                text = input_default.get_attribute('placeholder')
            elif input_default.get_attribute('title'):
                text = input_default.get_attribute('title')
            else:
                text = ''
            if value == text:
                return True
            else:
                logger.error('默认值不匹配！')
                return False
        else:
            logger.error('没有默认值！')
            return False